Popravi program


Za ogrevanje

1. podnaloga

Program vpraša za dve števili in za njun produkt, ter izpiše uporabnikove odgovore in pravi produkt. Vendar ne dela!

  ime = input("Kako ti je ime? ")
  print("Pozdravljen, ', ime, 'bi vadil poštevanko? ")
  int(input("Pa dajva. Vpiši prvi faktor: "))
  int(input("Pa še drugi faktor: "))
  rezultat = a*b
  c = input("Koliko, misliš, znaša produkt? ")
  print("Napisal si, da je", a, "krat", b, "enako", c)
  print("Pravilen odgovor je", rezulat)

Skopiraj ga, poskusi prevesti in popravi!

Uradna rešitev

ime = input("Kako ti je ime? ")
print("Pozdravljen,", ime, "bi vadil poštevanko? ")
a = int(input("Pa dajva. Vpiši prvi faktor: "))
b = int(input("Pa še drugi faktor: "))
rezultat = a * b
c = input("Koliko, misliš, znaša produkt? ")
print("Napisal si, da je", a, "krat", b, "enako", c)
print("Pravilen odgovor je", rezultat)

2. podnaloga

Razsute kartice

Ko sem bil jaz bruc (ja, v prazgodovini ;-) ) smo računalniške programe pisali na kartice. Na vsaki kartici je bil en stavek. In ni bilo tako redko, da si se spotaknil, razsul šop kartic in ... Potem je bilo potrebno zadevo ustrezno urediti. In sedaj imamo podoben problem. Virus je v naši datoteki premešal vrstice.

  #preberemo podatke
  print ('Program ti bo spremenil sekunde v dneve, ure, minute in sekunde')
  print (sekZacasne,'sekund je natanko')
  print (dnevi, 'dni,', ure, 'ur,', minute, 'minut in', sekunde,'sekund')
  minZacasne = sekZacasne // 60   #celi del deljenja so vse minute
  minute = minZacasne % 60        #ostanek od deljenja z 60 so minute ostalo že ure
  sekunde = sekZacasne % 60       #ostanek od deljenja z 60 so sekunde
  ure = ureZacasne % 24           #ostanek od deljenja z 24 so ure ostalo dnevi
  ureZacasne = minZacasne // 60   #celi del od deljenja z 60 so vse ure
  dnevi = ureZacasne // 24        #celi del deljenja z 24 so dnevi
  sekZacasne = int(input('Vnesi sekunde: '))
  #izpišemo rezultat

Uredi jih tako, da bo program smiselno deloval!

Uradna rešitev

#preberemo podatke
print ('Program ti bo spremenil sekunde v dneve, ure, minute in sekunde')
sekZacasne = int(input('Vnesi sekunde: '))
sekunde = sekZacasne % 60       #ostanek od deljenja z 60 so sekunde
minZacasne = sekZacasne // 60   #celi del deljenja so vse minute
minute = minZacasne % 60        #ostanek od deljenja z 60 so minute ostalo že ure
ureZacasne = minZacasne // 60   #celi del od deljenja z 60 so vse ure
ure = ureZacasne % 24           #ostanek od deljenja z 24 so ure ostalo dnevi
dnevi = ureZacasne // 24        #celi del deljenja z 24 so dnevi
#izpišemo rezultat
print (sekZacasne,'sekund je natanko')
print (dnevi, 'dni,', ure, 'ur,', minute, 'minut in', sekunde,'sekund')

Hišnik

Hišnik mora vsak mesec očistiti bazen. Da ga lahko očisti, mora najprej iz njega izčrpati vodo. Ker je bolj lene sorte, pa bi med iztakanjem vode (ki traja kar nekaj časa) raje odšel v bližnjo kavarno na pogovor s prijateljem, namesto da bi stražil bazen. Tukaj je program, ki bo za bazen velikosti 2 m x 3m x 9m izračunal, koliko sekund se bo praznil bazen, če vsako sekundo izteče iz bazena 23l vode. Če ste že pozabili: kubični decimeter vode = 1l vode.

  #Vnos dimenzij bazena.
  globina = 2
  širina = 3
  dolžina = 9
  # Pretvorba dimenzij bazena v dm.
  dolžinaVdm = dolžina * 10
  širinaVdm = širina * 10
  globinaVdm = globina * 10
  # Izračun prostornine bazena v kubičnih dm.
  prostorninaVdm = dolžinaVdm * širinaVdm * globinaVdm
  # Vnos pretoka vode v sekundi.
  prostorninaIztekaV1sek = 23
  # Izračun časa praznjenja bazena.
  časPraznjenjaVsek = prostorninaVdm / prostorninaIztekaV1sek
  # Izpis rezultata.
  print('Bazen velikosti', dolžina, 'm ×', širina, 'm ×', globina, 'm', 'se bo praznil', časPraznjenjaVsek, 'sekund.')

1. podnaloga

Spremeni zgornji program tako, da boš dimenzije bazena in hitrost iztekanja prebral! Dimenzije so v celih metrih!

Uradna rešitev

#Vnos dimenzij bazena.
globina = int(input('Vnesi globino bazena '))
širina = int(input('Vnesi širino bazena '))
dolžina = int(input('Vnesi dolžino bazena '))
# Pretvorba dimenzij bazena v dm.
dolžinaVdm = dolžina * 10
širinaVdm = širina * 10
globinaVdm = globina * 10
# Izračun prostornine bazena v kubičnih dm.
prostorninaVdm = dolžinaVdm * širinaVdm * globinaVdm
# Vnos pretoka vode v sekundi.
prostorninaIztekaV1sek = int(input('Koliko l vode v sekundi izteče: '))
# Izračun časa praznjenja bazena.
časPraznjenjaVsek = prostorninaVdm / prostorninaIztekaV1sek
# Izpis rezultata.
print('Bazen velikosti', dolžina, 'm ×', širina, 'm ×', globina, 'm', 'se bo praznil', časPraznjenjaVsek, 'sekund.')

2. podnaloga

Hišnik je zamenjal službo. A tudi tam imajo bazen in hišnik ga mora spet čistiti. Že je ves vesel zagnal tvoj program, a kaj, ko je pri merjenju ugotovil, da je globina bazena 2.34m. Pomagaj mu in program popravi tako, da bo sedaj sprejel podatke v obliki decimalnih števil. Potrudi se in rezultate izpiši lepo. Namig: oglej si, kaj počne float(12.45) in print("%.2f" % 1.2399) ali pa print("{:.2f}".format(3.1415926)), oziroma na spletu poišči "float Python 3" in "format string Python 3"

Uradna rešitev

#Vnos dimenzij bazena.
globina = float(input('Vnesi globino bazena '))
širina = float(input('Vnesi širino bazena '))
dolžina = float(input('Vnesi dolžino bazena '))
# Pretvorba dimenzij bazena v dm.
dolžinaVdm = dolžina * 10
širinaVdm = širina * 10
globinaVdm = globina * 10
# Izračun prostornine bazena v kubičnih dm.
prostorninaVdm = dolžinaVdm * širinaVdm * globinaVdm
# Vnos pretoka vode v sekundi.
prostorninaIztekaV1sek = float(input('Koliko l vode v sekundi izteče: '))
# Izračun časa praznjenja bazena.
časPraznjenjaVsek = prostorninaVdm / prostorninaIztekaV1sek
# Izpis rezultata.
print('Bazen velikosti', "{:.2f}".format(dolžina), 'm ×', "{:.2f}".formatirina), 'm ×',
      "{:.2f}".format(globina), 'm', 'se bo praznil', "{:.2f}".formatasPraznjenjaVsek), 'sekund.')

3. podnaloga

Hišnik je z našim programom sicer zelo zadovoljen, a zadnjič se je v pretvarjanju sekund v minute uštel in je zato prišel nazaj h bazenu cele pol ure prezgodaj. Zato prosi, če mu namesto časa v sekundah izpišeš čas v urah, minutah in sekundah. Tukaj boste morali sekunde iz decimalne oblike pretvoriti v celo število. Ugotovi, kako to storimo v Pythonu. Namig: https://docs.python.org/3/library/functions.html

Uradna rešitev

#Vnos dimenzij bazena.
globina = float(input('Vnesi globino bazena '))
širina = float(input('Vnesi širino bazena '))
dolžina = float(input('Vnesi dolžino bazena '))
# Pretvorba dimenzij bazena v dm.
dolžinaVdm = dolžina * 10
širinaVdm = širina * 10
globinaVdm = globina * 10
# Izračun prostornine bazena v kubičnih dm.
prostorninaVdm = dolžinaVdm * širinaVdm * globinaVdm
# Vnos pretoka vode v sekundi.
prostorninaIztekaV1sek = float(input('Koliko l vode v sekundi izteče: '))
# Izračun časa praznjenja bazena.
časSek = round(prostorninaVdm / prostorninaIztekaV1sek)
časMinut = časSek // 60
časSek = časSek % 60
časUr = časMinut // 60
časMinut = časMinut % 60
# Izpis rezultata.
print('Bazen velikosti', "{:.2f}".format(dolžina), 'm ×', "{:.2f}".formatirina), 'm ×',
      "{:.2f}".format(globina), 'm', 'se bo praznil',
      časUr, "ur,", časMinut, "minut in", časSek, "sekund.")

Pretvori

1. podnaloga

Naslednji program naj bi seštel dva kota, podana v stopinjah, minutah in sekundah

 print('Prvi kot\n=========')
 stopinje1 = int(input('stopinje: '))
 minute1 = int(input('minute: '))
 sekunde1 = int(input('sekunde: '))
 print('Drugi kot\n=========')
 stopinje2 = int(input('stopinje: '))
 minute2 = int(input('minute: '))
 sekunde2 = int(input('sekunde: '))
 stopinje = stopinje1 + stopinje2
 minute = minute1 + minute2
 sekunde = sekunde1 + sekunde2
 minute = minute + sekunde // 60
 minute = minute % 60
 print('Vsota kotov je', stopinje, 'stopinj,', minute, 'minut in', sekunde, 'sekund.')

Žal ne dela pravilno. Popravi ga!

Uradna rešitev

print('Prvi kot\n=========')
stopinje1 = int(input('stopinje: '))
minute1 = int(input('minute: '))
sekunde1 = int(input('sekunde: '))
print('Drugi kot\n=========')
stopinje2 = int(input('stopinje: '))
minute2 = int(input('minute: '))
sekunde2 = int(input('sekunde: '))
stopinje = stopinje1 + stopinje2
minute = minute1 + minute2
sekunde = sekunde1 + sekunde2
minute = minute + sekunde // 60
sekunde = sekunde % 60
stopinje = stopinje + minute // 60
minute = minute % 60
print('Vsota kotov je', stopinje, 'stopinj,', minute, 'minut in', sekunde, 'sekund.')

2. podnaloga

Spodaj je napisan program, ki kot v radianih (realno število) pretvori in izpiše v stopinjah in minutah (kot celi števili; za minute naj program ne uporabi zaokroženja ampak naj samo odreže decimalna mesta).

Primer: Za

kot = 2.185

naj program izpiše

2.185 radianov je 125 stopinj in 11 minut.

Žal ne deluje povsem pravilno. Popravi ga!

 import math # Število π je shranjeno v math.pi

 kot = input('Kot: ')
 stopinje = kot * 360 / math.pi
 minute = 60 * stopinje
 stopinje = int(stopinje)
 print('{:.6}'.format(kot), 'radianov je', stopinje, 'stopinj in', minute, 'minut

Uradna rešitev

import math # Število π je shranjeno v math.pi
    
kot = float(input('Vnesi kot: '))
stopinje = kot * 360 / (2 * math.pi)
minute = int(60 * (stopinje - int(stopinje)))
stopinje = int(stopinje)
print('{:.6}'.format(kot), 'radianov je', stopinje, 'stopinj in', minute, 'minut.')

3. podnaloga

Program

 ura = int(input('Ur: '))
 minuta = int(input('Minut: '))
 alfa = 60 * (3 * minuta) # Kot minutnega kazalca v kotnih minutah.
 beta = 60 * (ura + minuta) # Kot urnega kazalca v kotnih minutah.
 minute = abs(alfa - beta)
 minute = min(minute, 360 * 60 - minute) # Vzamemo manjšega od obeh kotov.
 minute = minute - int(minute) # Odrežemo decimalni del.
 stopinje = minute // 60
 print('Kot med urnim in minutnim kazalcem je', stopinje, 'stopinj in', minute, 'minut.')

naj bi izračunal manjšega izmed kotov med urnim in minutnim kazalcem ob danem času. Čas je podan z uro in minutami. Upoštevajte, da se vsako minuto tudi urni kazalec malo prestavi. Trenutno uro in minuto imate podano v spremenljivkah z imenoma ura in minuta. Kot naj bo izpisan v obliki

Kot med urnim in minutnim kazalcem je x stopinj in y minut.

kjer sta x in y celi števili (minut ne zaokrožuj, ampak samo odreži decimalni del).

Primer: za vrednosti

ura = 17
minuta = 47

naj program izpiše

Kot med urnim in minutnim kazalcem je 108 stopinj in 30 minut.

Uradna rešitev

ura = int(input('Ur: '))
minuta = int(input('Minut: '))
ura = ura % 12
alfa = 60 * (6 * minuta) # Kot minutnega kazalca v kotnih minutah.
beta = 60 * (30 * ura + 0.5 * minuta) # Kot urnega kazalca v kotnih minutah.
minute = abs(alfa - beta)
minute = min(minute, 360 * 60 - minute) # Vzamemo manjšega od obeh kotov.
minute = int(minute) # Odrežemo decimalni del.
stopinje = minute // 60
minute = minute % 60
print('Kot med urnim in minutnim kazalcem je', stopinje, 'stopinj in', minute, 'minut.')